package org.spider.utils;

import com.google.gson.*;

public class GsonUtils {

    private static final Gson LOWER_CASE_GSON=new GsonBuilder()
            //支持Map的key为复杂对象的形式
            .setLongSerializationPolicy(LongSerializationPolicy.STRING)
            .setDateFormat("yyyy-MM-dd HH:mm:ss")//时间转化为特定格式
            .setPrettyPrinting() //对json结果格式化.
            .setVersion(1.0)    //有的字段不是一开始就有的,会随着版本的升级添加进来,那么在进行序列化和返序列化的时候就会根据版本号来选择是否要序列化.
            .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
            .create();

    private static Gson COMMON_GSON=new GsonBuilder()
            //支持Map的key为复杂对象的形式
            .setLongSerializationPolicy(LongSerializationPolicy.STRING)
            .setDateFormat("yyyy-MM-dd HH:mm:ss")//时间转化为特定格式
            .setPrettyPrinting() //对json结果格式化.
            .setVersion(1.0)    //有的字段不是一开始就有的,会随着版本的升级添加进来,那么在进行序列化和返序列化的时候就会根据版本号来选择是否要序列化.
            .create();

    public static <T> String obj2jsonStr(T t) {
        return LOWER_CASE_GSON.toJson(t);
    }

    public static <T> T str2Obj(String jsonStr, Class<T> tClass) {
        return LOWER_CASE_GSON.fromJson(jsonStr, tClass);
    }

    public static <T> String commonObj2jsonStr(T t) {
        return COMMON_GSON.toJson(t);
    }

    public static <T> T commonStr2Obj(String jsonStr, Class<T> tClass) {
        return COMMON_GSON.fromJson(jsonStr, tClass);
    }
}
